package bdcin.email;

import java.security.Security;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import bdcin.excecoes.EmailException;

public class Email {
	
	private static final String SMTP_HOSTNAME = "smtp.gmail.com"; 
	private static final String SMTP_PORT = "465"; 
	private static final String emailFromAddress = "bdcin.admin@gmail.com"; 
	private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
		
	public static void sendSSLMessage(String recipients[], String subject, 
	         String message, String from) throws MessagingException { 

	      boolean debug = true; 

	      Properties props = new Properties(); 
	      props.put("mail.smtp.host", SMTP_HOSTNAME); 
	      props.put("mail.smtp.auth", "true"); 
	      props.put("mail.debug", "false"); 
	      props.put("mail.smtp.port", SMTP_PORT); 
	      props.put("mail.smtp.socketFactory.port", SMTP_PORT); 
	      props.put("mail.smtp.socketFactory.cl         " +
	      		"," +
	      		"ass", SSL_FACTORY); 
	      props.put("mail.smtp.socketFactory.fallback", "false"); 

	      Session session = Session.getDefaultInstance(props, 
	            new javax.mail.Authenticator() { 

	               protected PasswordAuthentication getPasswordAuthentication() { 
	                  return new PasswordAuthentication("bdcin.admin@gmail.com", 
	                        "sportfraco"); 
	               } 
	            }); 

	      session.setDebug(debug); 

	      Message msg = new MimeMessage(session); 
	      InternetAddress addressFrom = new InternetAddress(from); 
	      msg.setFrom(addressFrom); 

	      InternetAddress[] addressTo = new InternetAddress[recipients.length]; 
	      for (int i = 0; i < recipients.length; i++) { 
	         addressTo[i] = new InternetAddress(recipients[i]); 
	      } 
	      msg.setRecipients(Message.RecipientType.TO, addressTo); 

	      // Setting the Subject and Content Type 
	      msg.setSubject(subject); 
	      msg.setContent(message, "text/plain"); 
	      Transport.send(msg); 
	   } 

	
	
	
	public static void enviaEmail(String email, String assunto, String mensagem) throws EmailException {	
		
		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); 
		
		String[] destinos = new String[1];
		destinos[0] = email;

		try {
			Email.sendSSLMessage(destinos, assunto, mensagem, emailFromAddress);
		} catch (MessagingException e) {
			throw new EmailException(e.getMessage());
		}
	}
	


}
